Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2017, 10:55
Профессор
Отправить личное сообщение для espltd Посмотреть профиль Найти все сообщения от espltd
 
Регистрация: 10.10.2012
Сообщений: 201

Нужна консультация по отправки данных через ajax
Доброго дня! Подскажите пожалуйста, мне нужна консультация. Как отправлять данные с формы через ajax я знаю.

Вопрос в следующем. Сделал поисковый фильтр, пока порядка 15ти параметров, большая часть из них - это кнопки(button). Так вот поскольку не доводилось делать подобного фильтра не могу сообразить как правильно реализовать.

На данный момент проставил каждой кнопке свой id-шник, и при нажатии на любую кнопку, надо, чтобы менялись результаты поиска. Иными словами нажал я например на кнопку Баня->подгрузились бани, рядом нажал на кнопку из бруса/или бревна подгрузились бани из бруса или бревна. Т.е. при нажатии на любую кнопку запрос несколько меняется и происходит выборка из бд.

Но я не могу понять, при нажатии на любую кнопку я ведь должен отправить все данные, значения всех нажатых/выбранных элементов, чтобы по общему массиву переданных параметров выводились нужные результаты. Надеюсь, объяснил понятно, помогите разобраться как это правильно работает. Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2017, 11:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от espltd
при нажатии на любую кнопку я ведь должен отправить все данные, значения всех нажатых/выбранных элементов
Да. А проблема в чем?

PS. Вот только фильтр в котором выбор это только кнопки, это сомнительно, хотя если это параметры да/нет, то может быть.

Последний раз редактировалось laimas, 26.10.2017 в 12:38.
Ответить с цитированием
  #3 (permalink)  
Старый 26.10.2017, 14:32
Профессор
Отправить личное сообщение для espltd Посмотреть профиль Найти все сообщения от espltd
 
Регистрация: 10.10.2012
Сообщений: 201

А что сомнительного, ну вот например подобный фильтр https://metrosphera.ru/realty/search...limit=20&json=[{%22label%22:%222%20%D0%BA%D0%BE%D0%BC%D0%BD.%22,% 22id%22:%22typeObjectRealty10%22,%22name%22:%22typ eObjectRealty%22,%22value%22:%223%22,%22tagset%22: true},{%22label%22:%222017%20%D0%B3.%22,%22id%22:% 222017y%22,%22name%22:%22deliveryTime%22,%22value% 22:%222017%22,%22tagset%22:true},{%22tagset%22:tru e,%22label%22:%221%20%D0%BA%D0%BE%D0%BC%D0%BD.%22, %22id%22:%22typeObjectRealty9%22,%22name%22:%22typ eObjectRealty%22,%22value%22:%222%22},{%22tagset%2 2:true,%22label%22:%222016%20%D0%B3.%22,%22id%22:% 222016y%22,%22name%22:%22deliveryTime%22,%22value% 22:%222016%22}]&polygon=[]

слева есть кнопки, выбор комнаты квартиры, и год например, и если вы нажимаете на эти кнопки, то у вас формально отправляется массив всех собранных воедино полей и далее запрос в базу, вот я и не понимаю как этот механизм правильно реализовать... Не понимаю как все параметры скопом отправить, неужели писать условие для каждоый кнопки, типа если выбрана 1-комнатная квартира и например 2015 год, то считать с помощью val() значения всех остальных полей и отправить на сервер, но ведь это бред вроде. Глупо ведь писать для каждоый кнопки условие. Вот чего я не понимаю, т.к. раньше не делал подобного. Объясните плиз
Ответить с цитированием
  #4 (permalink)  
Старый 26.10.2017, 14:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от espltd
слева есть кнопки
Слева не только кнопки, но и списки, и поля ввода. Вы же описываете свой фильтр как исключительно набор кнопок, отсюда и сомнения. Трудно представить базу, в которой сущность описана только булевыми значениями, когда можно было бы использовать только кнопки.

Не смотрите что у кого как, типы полей вашей SQL таблицы будут определять элементы фильтра, что в основе обычная форма. А форму отправить, это просто нажать кнопку submit, сервер получит массив параметров, по которым как условие выборки и делается запрос в базу. Если ваш запрос асинхронный и используется jQuery, то достаточно сериализовать данные формы одним из методов: $(селектор формы, в обработчике submit, это this).serialize() или $(this).serializeArray().

Если асинхронный запрос при каждом изменении в фильтре, то можно использовать туже сериализацию, удаляя на сервере из полученного массива пустые значения. Или циклом пройти по элементам формы и взять только те, которые имеют значения.

Последний раз редактировалось laimas, 26.10.2017 в 14:48.
Ответить с цитированием
  #5 (permalink)  
Старый 27.10.2017, 09:23
Профессор
Отправить личное сообщение для espltd Посмотреть профиль Найти все сообщения от espltd
 
Регистрация: 10.10.2012
Сообщений: 201

Ох, что-то я запутался, возможно я не много не верно истолковал задачу.

Смотрите, это больше относится к пошаговому фильтру. Т.е. Изначально у меня есть форма в которой есть 3 выпадающих поля-списка и рядом с ними кнопка Поиск, которая естественно является submit-ом и отправляет форму, после которых мне выпадают найденные результаты. После того, как результаты появились, у меня вылазит доп. фильтр, на котором есть поля с ценой с поиском по названию, и есть как раз таки кнопочки, так вот я хочу сделать, чтобы этот условно назовем "второстепенный" фильтр при нажатии на кнопки тут же мне обновлял результат Ajax-ом. Я вот что не понимаю. Когда уже у тебя есть отобранный список, а далее есть доп. параметры но без тега form. Просто поля в дивах сделал с id-шниками. Мысль такая, при нажатии на кнопку (не submit) считать значения всех остальных полей наверное и отправить аякс запрос... Или обязательно надо чтобы второстепенный фильтр он тоже был в тегах form? Или как ? Как один раз отыскать я понимаю, а как на основе уже отобранных, выведенных из бд результатов учесть все выбранные, заполненные поля и уже аяксом отбирать то что есть, как бы вторым шагом? Вот это и не понимаю, то ли это должно быть 2 формы, сперва одна отбирает а потом другая, но если вторая форма начинает отбирать то, что есть, то ведь надо еще учесть как-то уже отобранное из первой формы, да + второй. Блин, запутался
Ответить с цитированием
  #6 (permalink)  
Старый 27.10.2017, 09:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну если пошаговая фильтрация, то первичный набор фильтра должен быть сохранен и передаваться наряду со вторичным, в противном случае вы не сможете выбрать в базе соответствующее.

Вот только "уже без form" сделать конечно можно, но зачем же лишний геморрой если элементы формы как нельзя лучше соответствуют данной задаче.

У вас асинхронные запросы, и образно опишем набор фильтра элементами:

A, B, C, D, E, F

Пользователь выбирает среди них B, D, F.

Сервер отвечает и показывается дополнительные элементы фильтра:

E, H, G

Пользователь в них выбирает H.

Клиент отправляет запрос состоящий из выбранных элементов первого набора (запросы асинхронные и состояние ранее выбранного не изменяется) плюс из второго.

Все должно быть в одной форме, и клиенту не придется проверять условия - просто выбрать все элементы из набора, которые выбрал пользователь.

Последний раз редактировалось laimas, 27.10.2017 в 09:41.
Ответить с цитированием
  #7 (permalink)  
Старый 27.10.2017, 10:05
Профессор
Отправить личное сообщение для espltd Посмотреть профиль Найти все сообщения от espltd
 
Регистрация: 10.10.2012
Сообщений: 201

Т.е. предлагаете мне поисковый фильтр тоже засунуть в область формы - например в какой нибудь div в форме, который изначально скрыт и после найденных результатов его отображать а потом пользоваться данным фильтром в рамках единой формы? Как-то так? А то у меня разбито на части, поисковый фильтр не входит не в одну форму, а просто вылазит снизу под формой в диве после найденных результатов.
Ответить с цитированием
  #8 (permalink)  
Старый 27.10.2017, 10:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от espltd
предлагаете мне поисковый фильтр тоже засунуть в область формы
А что значит "поисковый" и "не поисковый"? Собственно что бы вы не делали, это параметры запроса к базе, а у нее нет понятия "фильтр", есть параметры запроса согласно которым будет происходить выборка из нее.

Если первичный набор вашего фильтра это выборка по неким глобальным критериям, а вторичный набор, это поиск в первичной выборке, то по большому счету разделять ничего и не требуется. Вы в любом случае вынуждены будет отправлять серверу весь набор параметров запроса.

Другое дело, если бы первичный набор, это возврат клиенту найденных записей, а вторичный набор, это не запрос к серверу, а фильтрация среди полученного непосредственно на клиенте, то есть работа с DOM.

Иначе как ни крути, хоть на более шагов разбивай, все это единый набор и раскидывать его на кучу форм не имеет смысла. А уж как этим управлять (скрывать/показывать/очищать выбор), это частности. Если вторичный набор должен зависеть от первого, то не сложно его скрывать/очищать при изменении в первом наборе, а показывать после ответа сервера на первичный запрос.
Ответить с цитированием
  #9 (permalink)  
Старый 27.10.2017, 11:34
Профессор
Отправить личное сообщение для espltd Посмотреть профиль Найти все сообщения от espltd
 
Регистрация: 10.10.2012
Сообщений: 201

Спасибо, вы мне помогли/ разжевали хоть по полочкам, а то запутался. Все сделал единой формой сейчас, просто второй набор парамтеров скрыл и когда приходят первые найденные результаты из первого набора, далее вылазит див со вторым набором, сейчас вот только не понятно, там, где у меня кнопки, получается, что мне сейчас при нажатии на любую кнопку из второго набора параметров надо отправить форму или считать значения у всех остальных полей?
Ответить с цитированием
  #10 (permalink)  
Старый 27.10.2017, 11:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от espltd
мне сейчас при нажатии на любую кнопку из второго набора параметров надо отправить форму или считать значения у всех остальных полей?
Ну вы же запрашиваете сервер, причем это запрос к БД на сервере, а любой выбор в наборе фильтра, это параметры запроса к БД. Следовательно любой выбор в фильтре это запрос сервера. Когда он будет инициализирован - по изменению выбора в фильтре или по нажатию submit, это вам решать. Но то что запрос при вторичном выборе должен оправлять и выбранные позиции из первого набора фильтра, то это однозначно. Иначе же вы получите совсем не то, чего ожидаете.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите настроить модальное окно на подгрузку данных через ajax SERblY Общие вопросы Javascript 7 16.09.2017 18:10
Обработка AJAX - данных (UserScript) fesskerl Events/DOM/Window 1 15.11.2013 23:40
Передача данных через Ajax (IE) byFahrenheit AJAX и COMET 5 01.03.2013 16:06
отправка данных в инпут через AJAX 2 imediasun1 Элементы интерфейса 1 30.01.2013 18:13
Просмотр передаваемых данных через AJAX Гость AJAX и COMET 3 04.08.2008 14:34